package br.com.jvet.persistencia;

import javax.ejb.Stateless;
import javax.persistence.Query;

import br.com.jvet.entidade.Movimentacao;
import br.com.jvet.entidade.Produto;

@Stateless
public class MovimentacaoDAO extends AbstractDAO<Movimentacao, Integer> {

	public MovimentacaoDAO() {
		super(Movimentacao.class);
	}

	private static String UPDATE_MOVIMENTACAO = "UPDATE Produto p set p.quantidade =:qtd+p.quantidade where p.codigo=:codigo";

	private static String UPDATE_MOVIMENTACAO_SAIDA = "UPDATE Produto p set p.quantidade =:qtd-p.quantidade where p.codigo=:codigo";

	
	public void incluir(Movimentacao obj) {

		getEntityManager().persist(obj);
		updateQtdMovimentacao(obj.getProduto(), obj);
		getEntityManager().flush();
	}
	
	
	public void updateQtdMovimentacao(Produto produto, Movimentacao mov) {
		Query c = null;
		switch (mov.getStatus()) {
		case ENTRADA:
			c = super.getEntityManager().createQuery(UPDATE_MOVIMENTACAO);
			break;

		case SAIDA:
			c = super.getEntityManager().createQuery(UPDATE_MOVIMENTACAO_SAIDA);
			break;

		default:
			break;
		}
		c.setParameter("qtd", mov.getQuantidade());
		c.setParameter("codigo", produto.getCodigo());
		c.executeUpdate();

	}

}
